其他
围住一只猫猫需要几步?【多猫预警】
回归正题。今天要讲的游戏叫做围小猫,2021年底在小编我的朋友圈里着实是火了一把,如果你还没有玩过,可以在搜索引擎中搜索“围小猫”。记忆力好的读者可能会记得,这款游戏并不是第一次火了,没错,它就是2014年曾在朋友圈大火过的“围住神经猫”的新皮肤!其原型可以追溯到更早。
上次小编我还未出山放过了你,这次既然被我逮到了,嘿嘿,今天我不把你围住,我就不是中二所小编!
游 戏 介 绍
初上手的时候你会发现,这个游戏并不简单,几乎很难成功。因为棋盘其实并不大,猫只需要5步就可以跑出棋盘边界,很难将小猫堵住。
那么一个自然而然的问题是:如果棋盘足够大,可以保证将小猫堵住吗?在回答这个问题之前,请让我先介绍一下“天使问题”(angel problem)。
天 使 问 题
天使问题[1]首次见于1982年出版的《Winning Ways》一书,由书作者数学家约翰·H·康威(John H. Conway)提出。这是一个双方玩家分别扮演天使和恶魔的博弈游戏。游戏在一个无限大方格棋盘上进行,起始棋盘是空的。定义正整数k为天使的阶数,k阶天使每步可以跳到k*k范围内的任何一格,无论路上有没有障碍物。每一轮中,恶魔可以在棋盘上放置一个障碍物,但不可放在当前天使所在的位置,而天使可以移动到范围内未被放置障碍物的任何一处。若在一轮中,天使无法移动,则恶魔获胜。如果天使能无限地继续游戏,则天使获胜。
康威已经证明[2](虽然他说是该书的共同作者伯利坎普展示给他的),只要棋盘大小大于32*33,k=1的情况下恶魔是必胜的。
为方便展示,这里将格点化为方格。如图2所示是一个33*33的棋盘,天使起始位于红色方格。无论天使开局怎么走,恶魔前8步只需将棋盘四周的8个黑格填上障碍物,这时天使必然位于中间的蓝色区域内,距离接触包围圈还有7步。
而无论天使向哪个方向逃,恶魔都可以隔一格放一个障碍物这样逐渐缩小缺口,保证在天使接触棋盘边缘之前将缺口堵上,因此恶魔是必胜的。
一阶的天使问题告诉我们,只要棋盘足够大,让我们可以提前布置好包围圈,就一定能围住天使。而且天使问题中的棋盘是八连通的,即天使向横竖斜八个方向都可以移动,所以布置一个包围圈至少需要八步。而围小猫中的棋盘是六连通的,因此包围圈只需要6步。我们定义猫猫从空白棋盘中心逃脱的最少步数为棋盘的深度n,可以看到,围小猫游戏的棋盘深度为5。
丰富的游戏经验告诉我,n=5显然是不够的。如果要保证必胜,像天使问题里一样布置一个包围圈至少需要6个障碍物,也就是6步。因为猫n步就会逃出棋盘,而我们必须在猫逃脱之前花至少一步堵住逃脱的方向,所以棋盘的深度n至少应该为6+1+1=8。那么棋盘需要有多大才能保证必胜呢?答案就是n=8[3]。图中偶数号格点为我方放的障碍物,奇数号格点依次为猫猫的行动轨迹,可以看到这种情况下,我方是必定获胜的。
所以,只要棋盘的深度不小于8,即使是一个空白的棋盘,我们也是必定可以围住小猫的。相应地,在没有障碍物的情况下,棋盘深度小于8时我们是不可能围住小猫的。
那 么,有 障 碍 物 呢?
终于回到了我们最初的问题:如何在一个n=5的棋盘上利用已有的障碍物围住猫猫。其实这里的思路还是一样的,那就是:先用若干步布置一个包围圈,然后通过围堵来完善包围圈。唯一的不同是,由于棋盘不够大,我们必须利用已有的障碍物来布置包围圈。和棋盘的深度一样,我们定义包围圈的深度为猫猫逃出包围圈的最少步数。很显然,包围圈越深,留给我们布置防线的步数就越多。先来研究一下包围圈应该是什么样子的:包围圈应当是六边形,与棋盘形状相同,且每条边都经过每个经过格点的圆心,不允许斜着直接连。只有包围圈的每个顶点(如下面图6中的1-6号点)或者与该顶点相邻且在包围圈上的格点(如下图6中的7-15号点)有障碍物,才能起到挡住猫猫的效果。如果上述位置没有障碍物的话,就无法保证在猫猫被追赶到此处时闭合包围圈。
如果一个顶点或与其相邻且在包围圈上的格点上有障碍物,我们就称这个顶点已完成,定义一个包围圈的完成度为已完成的顶点数量。下面我们举一个例子来说明。
图6是一个包围圈的雏形,可以看到1,2,11,4,5号点都有障碍物,他们对应的顶点都已完成。但它并不是一个完整的包围圈,因为顶点6是未完成的。如果猫猫从右上往左上逃,我们堵住8号点后猫猫会逃至16号点,此时6,7两点均空,猫猫逃脱。顶点5虽然有障碍物,但它本身也是一个顶点,不能算作顶点6的相邻点。所以这个包围圈的完成度是5。
从棋盘深度为8的情形我们可以知道,在包围圈完成,即完成度为6时,如果猫猫距离包围圈至少有2格,我们根据猫猫的位置放障碍物来围堵就可以必胜。也就是说,必胜条件是包围圈深度+包围圈完成度至少为8。所幸,上图中的猫猫距离包围圈有3格,也就是说包围圈的深度是3,如下图所示,我们只需补上包围圈里缺失的点,就可以保证必胜。这就是看过本文的我们,第一步落在看似不需要优先围堵的6号点的原因。下面图7展示了图6例子中围猫的必胜方法。
需要注意的是,画包围圈也是有技巧的。比如下面这个图8就有AB两种画圈的方式,且包围圈的完成度均为5。如果按照红色的A方案规划4,5号点之间的包围圈,则包围圈的深度为2,5+2<8,无法围住猫猫。如果按照蓝色的方案B,则包围圈的深度为3,5+3=8,可以围住猫猫。所以画圈的方式也是很重要的哦!
然而,由于游戏条件的限制,初始只有6-8个障碍物,棋盘深度也只有5,所以大多数情况下都是无法必胜的,如果想围住小猫,就多多地刷新吧!
不过,实际上游戏里的这只小猫并不太聪明,它的逃脱逻辑只是一个单层的贪心算法:只考虑当前看来是最好的逃脱路线。所以我们可以利用这点设下陷阱,诱导猫猫走出多余的步数,从而赢下无法必胜的棋盘,有兴趣的读者朋友一定要去试一试哦。
围 住 猫 猫 的 秘 诀!
最后,让我们总结一下围住猫猫的秘诀吧!只需要简单的三步哦。第一步:根据已有的初始障碍物划定包围圈,在保证有尽可能多顶点被完成的前提下,让包围圈的深度尽可能地大。第二步:判断包围圈完成度+包围圈的深度是否≥8?如果小于则无法保证围住猫猫,直接重置。第三步:先将包围圈完成,然后对应猫猫所在位置进行围堵即可获胜。
写 在 最 后
还记得开头说的天使问题吗?这个问题其实并没有被完全解决。目前在天使的阶数k比较小,比如k=2的时候,数学家已经证明天使在无限大棋盘上是必胜的,但是对于任意有限阶的天使,哪方能必胜这个问题尚无答案。也许,能够解决这个问题的就是聪明的你。解决不了也没关系,至少,你学会如何抓住猫猫了,对吧?参考文献:[1]维基百科 天使问题[2]John H. Conway, The angel problem, in: Richard Nowakowski (editor) Games of No Chance, volume 29 of MSRI Publications, pages 3–12, 1996.[3]曾加的回答 - 知乎封面来源搜狐网,表情包来源网络
编辑:fiufa
近期热门文章Top10↓ 点击标题即可查看 ↓1. 年终别去赌:你永远赢不了“凯利公式”2. 体重6000吨,活了上万年:世界上最大的生物正在被慢慢吃掉3. 克莱因蓝到底是什么蓝?4. 工作时听歌,原来有这么多好处!5. “川沙妲己”可爱的秘密被我找到了6. 你是个成熟的脂肪细胞了,应该学会自己燃烧7. 2021年最强视觉欺骗!只有王者级的眼睛才能识破骗局8. 洗过的羽绒服保暖性会变差吗?| No.2889. 脑子裂开后,会发生什么?10. 光是什么? 点此查看以往全部热门文章